/*
  剩余参数
    arguments的缺陷：
      1. 如果和形参配合使用，容易导致混乱
      2. 从语义上，使用arguments获取参数，由于形参缺失，无法从函数定义上理解函数的真实意图

    ES6的剩余参数专门用于收集末尾的所有参数，将其放置到一个形参数组中

    注意：
      一个函数，仅能出现一个剩余参数
      一个函数，如果有剩余参数，剩余参数必须时最后一个参数
*/
function sum(...rest) {
  return rest.reduce((cur, prev) => cur + prev);
}

console.log(sum(1));
console.log(sum(1, 2));
console.log(sum(1, 2, 3));
